このチュートリアルでは、カスタムコードを使用して作成するレポートの作成方法を紹介します。
このトピックでは、以下のタスクを行います。
- Visual StudioプロジェクトにActiveReportを追加する
- レポートをデータソースに接続する
- データセットを追加する
- レポートのレイアウトを作成する
- コードをレポートに埋め込んでフィールド式で参照する
- レポートを表示する
 |
メモ:
- このチュートリアルでは、Reelsデータベース(Reels.mdb)のStoreテーブルを使用しています。Reelsデータベース(..\ActiveReportsNET9\Data\Reels.mdb)へのアクセス権限が必要です。
- このチュートリアルではページレポートを使用していますが、RDLレポートを使用した場合も同様の手順で作成することが可能です。
|
チュートリアルを完了すると、次のようなレポートが作成されます。
設計時のレイアウト
実行時のレイアウト
Visual StudioプロジェクトにActiveReportを追加する
- Visual Studioで新規プロジェクトを開きます。
- [プロジェクト]メニューから[新しい項目の追加]を選択します。
- [新しい項目の追加]ダイアログで[ActiveReports 9.0Jページレポート]を選択し、ファイル名を「CustomCode」に変更します。
- [追加]ボタンをクリックします。
詳細は、「プロジェクトにレポートを追加する 」を参照してください。
レポートをデータソースに接続する
- 「レポートエクスプローラ」 では、データソースのノードを右クリックして、[データソースの追加]のオプションを選択するか、[追加]ボタンから[データソース]を選択します。

- [レポートデータソース]ダイアログでは、[全般]ページを選択し、[名前]を「ReportData」に変更します。
- このチュートリアルでは、Reelsデータベースに接続します。詳細は、「データソースとの接続 」を参照してくだざい。
データセットを追加する
- 「レポートエクスプローラ」 では、データソースのノードを右クリックして、[データセットの追加]のオプションを選択するか、[追加]ボタンから[データセット]を選択します。
- 「[データセット]ダイアログ」ダイアログでは、[全般]のページを選択し、[名前]フィールドを「Districts」に変更します。この名前はレポートエクスプローラで、データソースの子ノードとして表示されます。
-
[データセット]ダイアログの[クエリ]フィールドに次のSQLクエリを入力します。
SQLクエリ |
コードのコピー
|
SELECT Store.StoreName, Address.City, Address.Region AS StateProvince, Address.Country, Districts.District
FROM Address INNER JOIN (Districts INNER JOIN Store ON Districts.DistrictID = Store.DistrictID) ON Address.AddressID = Store.Address WHERE NOT Districts.DistrictID = 0 ORDER BY Districts.District
|
- クエリを検証するには、クエリボックスの横にある[データセットの検証]アイコンをクリックします。

- [OK]をクリックしてダイアログを閉じます。データセットとクエリフィールドは、レポートエクスプローラのノードとして表示されます。
レポートのレイアウトを作成する
- Visual Studioのツールボックスから、デザイナ面上に「TextBox」コントロールをドラッグし、[プロパティ]ウィンドウから以下のプロパティを設定します。
プロパティ名 |
値 |
Location |
0in, 0in |
Size |
6.5in, 0.5in |
TextAlign |
Center |
FontSize |
14pt |
Value |
地区別の商店 |
- ツールボックスから、デザイナ面上にTableデータ領域をドラッグし、[プロパティ]ウィンドウから、DataSetNameプロパティを「Districts」に設定します。
- Tableに以下のプロパティを設定します。
プロパティ名 |
値 |
Location |
0in, 0.5in |
FixedSize |
6in, 7in
 |
メモ:ページレポートでは、FixedSizeプロパティを設定する必要があります。 |
|
- Table内をクリックし、Tableの上部に列ハンドルを表示します。[プロパティ]ウィンドウから、次の列に対してWidthプロパティを設定します。
列 |
幅 |
TableColumn1 |
3in |
TableColumn2 |
1.5in |
TableColumn3 |
1.5in |
- Table内をクリックし、Tableの左に行ハンドルを表示します。いずれかの行ハンドルを右クリックして[グループの挿入]を選択します。
- [Table - グループ]ダイアログでは、[グループ化の条件]のオプションに、次の式を入力します「
=Fields!District.Value」。
- 同ダイアログでは、[名前]を「District」に設定し、[OK]をクリックしてダイアログを閉じます。新しいグループのヘッダとフッタが表示されます。
- [レポートエクスプローラ]では、[Districts]データセットから[District] フィールドを[Table]のグループヘッダの2番目の列にドラッグします。これにより自動的にグループヘッダ行に式が入力され、Tableヘッダ行に静的なラベルが表示されます。
- グループヘッダ行の1番目の列では、[District]フィールドの左のセルを選択し、[プロパティ]ウィンドウのValueプロパティを「地区」に設定します。
- グループヘッダ行の左にある行ハンドルをクリックし、行全体を選択して、[プロパティ]ウィンドウから以下のプロパティを設定します。
プロパティ名 |
値 |
FontSize |
12pt |
FontWeight |
Bold |
BackgroundColor |
MediumPurple |
Color |
White |
- Tableの左にあるいずれかの行ハンドルを右クリックし、[テーブルのヘッダ]を選択して、テーブルのヘッダを削除します。
- Tableの左にあるいずれかの行ハンドルを右クリックし、[テーブルのフッタ]を選択して、テーブルのフッタを削除します。
-
[レポートエクスプローラ]では、[Districts]データセットから以下のフィールドをテーブルの詳細行上にドラッグ&ドロップします。
フィールド |
列 |
StoreName |
TableColumn1 |
City |
TableColumn2 |
StateProvince |
TableColumn3 |
- グループヘッダの3番目の列から[State Province]の静的なラベルを削除します。
- グループヘッダ行の行ハンドルを右クリックし、[下に行を挿入]を選択して各グループの静的なラベルを表示するために行を追加します。
- 追加した行では、Tableの列の静的なラベルを以下の値のように入力します。
TableColumn1
プロパティ名 |
値 |
Value |
商店番号 |
FontWeight |
Bold |
TableColumn2
プロパティ名 |
値 |
Value |
都市 |
FontWeight |
Bold |
TableColumn3
プロパティ名 |
値 |
Value |
=iif(Fields!Country.Value="USA", "州", "地方") |
FontWeight |
Bold |
 |
メモ: 3番目の列では、国が米国である場合は「州」を表示しますが、そうではない場合は「地方」を表示します。
|
コードをレポートに埋め込んでフィールド式で参照する
このカスタムコードは、レポートにある各都市に対してYahoo!R Mapsへ移動するURLを作成します。
- レポートの[スクリプト]タブでは、以下のコードを入力し、URLを作成します。
Visual Basicコードスクリプトタブに追加します。 |
コードのコピー
|
Public Function MapLink(ByVal Country, ByVal City, ByVal StateProvince) As String
Dim Link As String
Dim _Country As String = Country.ToString()
Dim _City As String = City.ToString()
Dim _StateProvince As String = StateProvince.ToString()
Select Case _Country
Case "USA"
Link = "http://maps.yahoo.com/maps_result?addr=&csz=" & _City & "%2C+" & _StateProvince & "&country=us&new=1&name=&qty="
Case "Canada"
Link = "http://ca.maps.yahoo.com/maps_result?csz=" & _City & "%2C+" & _StateProvince & "&country=ca"
Case Else
Link = ""
End Select
Return Link
End Function
|
 |
メモ: カスタムコードは、レポートでコードを再利用または、式で指定できないような非常に複雑なコードの場合役に立ちます。カスタムコードは、Visual Basic.NETを基に記述されたインスタンスである必要があります。複数のメソッドを含むことができますが、クラスまたは他の.NET言語を使用する場合、カスタムアセンブリを作成してください。詳細は、「スクリプトの使用」を参照してください。
|
フィールド式に埋め込んだコードを参照する
- レポートの[デザイナ]タブでは、TableのDetailの行を選択するために2番目の列を(
=Fields!City.Value 式を含む
)選択します。[プロパティ]ウィンドウの下部にある[プロパティ設定ダイアログ]をクリックします。これはコントロールのダイアログを開くコマンドです。詳細は、「[プロパティ] ウィンドウ」を参照してください。
- [Textbox - 全般]ダイアログでは、[ナビゲーション]ページへ移動します。
- [URLに移動]の横にあるラジオボタンを選択し、コンボボックスに次の式を入力します
「= Code.MapLink(Fields!Country.Value, Fields!City.Value, Fields!StateProvince.Value)」。
- [OK]をクリックしダイアログを閉じ、コードを使用してフィールド用のハイパーリンクを作成します。
レポートを表示する
- 設計時にレポートを表示するには、プレビュータブをクリックします。
または
関連トピック